how does [<Literal>] differ from other constants in F#

Posted by Mitzh on Stack Overflow See other posts from Stack Overflow or by Mitzh
Published on 2014-08-24T14:40:01Z Indexed on 2014/08/24 22:20 UTC
Read the original article Hit count: 160

Filed under:

I am a bit confused by the Literal keyword and why it is necessary in F#.

Reading the docs, it sounds to me that [<Literal>] is used to define a constant, however I am a bit confused how this constant differs from all other constants in F#..

Values that are intended to be constants can be marked with the Literal attribute. This attribute has the effect of causing a value to be compiled as a constant.

When I think of a constant, I think of something which is immutable....

let x = "a" + "b" //this is a immutable value, its value is constant
[<Literal>]
let y = "a" + "b" //this is also a immutable value, but why is this a special constant?

Is it because the 'normal' F# values are evaluated lazily and the [<Literal>] is not evaluated lazily..? is that what they mean with 'compiled as constant'..? or is there something else to it?

© Stack Overflow or respective owner

Related posts about F#